/**
 * API管理模块
 * 负责与后端API的交互
 */
class ApiManager {
    constructor() {
        this.baseUrl = '';
    }

    /**
     * 保存页面数据
     * @param {Object} pageData - 页面数据
     * @param {string} filename - 文件名
     * @returns {Promise} API响应
     */
    async savePage(pageData, filename) {
        try {
            const response = await fetch('/api/save', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                    filename: filename,
                    data: pageData
                })
            });

            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }

            return await response.json();
        } catch (error) {
            console.error('保存页面失败:', error);
            throw error;
        }
    }

    /**
     * 加载页面数据
     * @param {string} filename - 文件名
     * @returns {Promise} 页面数据
     */
    async loadPage(filename) {
        try {
            const response = await fetch(`/api/load/${filename}`);
            
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }

            return await response.json();
        } catch (error) {
            console.error('加载页面失败:', error);
            throw error;
        }
    }

    /**
     * 获取页面列表
     * @returns {Promise} 页面列表
     */
    async getPageList() {
        try {
            const response = await fetch('/api/pages');
            
            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }

            return await response.json();
        } catch (error) {
            console.error('获取页面列表失败:', error);
            throw error;
        }
    }

    /**
     * 生成预览页面
     * @param {Object} pageData - 页面数据
     * @param {string} filename - 文件名
     * @returns {Promise} 预览URL
     */
    async generatePreview(pageData, filename) {
        try {
            const response = await fetch('/api/preview', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({
                    filename: filename,
                    data: pageData
                })
            });

            if (!response.ok) {
                throw new Error(`HTTP error! status: ${response.status}`);
            }

            const result = await response.json();
            return result.url;
        } catch (error) {
            console.error('生成预览失败:', error);
            throw error;
        }
    }
}

// 导出类（如果使用模块系统）
if (typeof module !== 'undefined' && module.exports) {
    module.exports = ApiManager;
}
